package www.bancodelanacion.intranet.prestamos.listeners;

import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;


import www.bancodelanacion.intranet.prestamos.entidad.AuditoriaDTO;
import www.bancodelanacion.intranet.prestamos.entidad.TrabajadorDTO;
import www.bancodelanacion.intranet.prestamos.service.AuditoriaServiceImpl;

/**
 * Application Lifecycle Listener implementation class EscuchadorSesionAtributo
 *
 */
public class EscuchadorSesionAtributo implements HttpSessionAttributeListener {

	private AuditoriaServiceImpl auditoriaService = new AuditoriaServiceImpl();
	private SimpleDateFormat sdf = 	new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
	private String fechaLogin= null;

    public void attributeRemoved(HttpSessionBindingEvent arg0) {
    	//te devuelve el nombre de atributo que se removio
    	String nombre =	arg0.getName();
    	if(nombre.equals("TRABAJADOR_LOGEADO")){
    		AuditoriaDTO auditoriaDTO = new AuditoriaDTO();
    		auditoriaDTO.setFechaLogin(fechaLogin); 
    		auditoriaDTO.setFechaLogout(sdf.format(new Date()));
    		try {	
				auditoriaService.update(auditoriaDTO);
			} catch (SQLException e) {
				e.printStackTrace();
			}
    	}
    }

	/**
     * @see HttpSessionAttributeListener#attributeAdded(HttpSessionBindingEvent)
     */
    public void attributeAdded(HttpSessionBindingEvent arg0) {
      	String nombre =		arg0.getName();
    	if(nombre.equals("TRABAJADOR_LOGEADO")){
    		AuditoriaDTO auditoriaDTO = new AuditoriaDTO();
    		
    		TrabajadorDTO c = (TrabajadorDTO)arg0.getSession().getAttribute("TRABAJADOR_LOGEADO");
    		auditoriaDTO.setTrabajador(c.getCodigotrabajador());
    		fechaLogin = sdf.format(new Date());
    		auditoriaDTO.setFechaLogin(fechaLogin);
    		auditoriaDTO.setFechaLogout(null);
    		try {
				auditoriaService.registrar(auditoriaDTO);
			} catch (SQLException e) {
				e.printStackTrace();
			}
    	}
    }

	/**
     * @see HttpSessionAttributeListener#attributeReplaced(HttpSessionBindingEvent)
     */
    public void attributeReplaced(HttpSessionBindingEvent arg0) {
        // TODO Auto-generated method stub
    }
	
}
